/**
 * 
 */
package servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Vector;

import client.ChatClient;
import pojo.Message;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @author peter
 * @date   2010-4-16
 */
public class ChatServlet extends HttpServlet {

	/**
	 * Constructor of the object.
	 */
	public ChatServlet() {
		super();
	}

	/**
	 * Destruction of the servlet. <br>
	 */
	public void destroy() {
		super.destroy(); // Just puts "destroy" string in log
		// Put your code here
	}

	/**
	 * The doGet method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to get.
	 * 
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		out
				.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
		out.println("<HTML>");
		out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
		out.println("  <BODY>");
		out.print("    This is ");
		out.print(this.getClass());
		out.println(", using the GET method");
		out.println("  </BODY>");
		out.println("</HTML>");
		out.flush();
		out.close();
	}

	/**
	 * The doPost method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to post.
	 * 
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		
		ChatClient cc=new ChatClient();
		HttpSession session = request.getSession();
		String username=(String)session.getAttribute("username");//用户名
		String roomname=(String)session.getAttribute("roomname");//房间名
		String message=request.getParameter("message");//消息
		session.setAttribute("action",request.getParameter("action"));//动作
		
		String receiver=request.getParameter("receiver");//接收者
		int visiable=-1;//密聊还是私聊标志
		
		if(receiver==null||receiver.equals("")||receiver.equals("所有人"))//群聊
		{
//			System.out.println("群聊");
			Message ms= new Message(username,roomname,message);
			cc.talkToAll(ms);
		}else
		{
			
//			System.out.println("选择对象："+receiver);
			if(request.getParameter("secret")!=null)//密聊
			{
//				System.out.println("密聊");
				visiable=1;
			}
				
			else
			{
//				System.out.println("私聊");
				visiable=0;//私聊
			}
				
			Message ms=new Message(username,receiver,roomname, message,visiable);
			cc.talkToOne(ms);
			
		}
//		System.out.println("Chat servlet username: "+username);
//		System.out.println("chat servlet message: "+message);
//		Message ms= new Message(username,roomname,message);
//		cc.talkToAll(ms);
		//将用户发言的文本区域清空
		out.println("<script>parent.document.chatForm.message.value=\"\"</script>");
		//刷新消息显示区
		out.println("<script>parent.parent.mainFrame.messageboard.location.reload()</script>");
		out
				.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
		out.println("<HTML>");
		out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
		out.println("  <BODY>");
		out.print("    This is ");
		out.print(this.getClass());
		out.println(", using the POST method");
		out.println("  </BODY>");
		out.println("</HTML>");
		out.flush();
		out.close();
	}

	/**
	 * Initialization of the servlet. <br>
	 *
	 * @throws ServletException if an error occurs
	 */
	public void init() throws ServletException {
		// Put your code here
	}

}
